当前位置:  开发笔记 > 编程语言 > 正文

Python的`urllib2`:当我在维基百科页面上"urlopen"时,为什么会出现错误403?

如何解决《Python的`urllib2`:当我在维基百科页面上"urlopen"时,为什么会出现错误403?》经验,为你挑选了3个好方法。

尝试urlopen维基百科的某个页面时,我有一个奇怪的错误.这是页面:

http://en.wikipedia.org/wiki/OpenCola_(drink)

这是shell会话:

>>> f = urllib2.urlopen('http://en.wikipedia.org/wiki/OpenCola_(drink)')
Traceback (most recent call last):
  File "C:\Program Files\Wing IDE 4.0\src\debug\tserver\_sandbox.py", line 1, in 
    # Used internally for debug sandbox under external interpreter
  File "c:\Python26\Lib\urllib2.py", line 126, in urlopen
    return _opener.open(url, data, timeout)
  File "c:\Python26\Lib\urllib2.py", line 397, in open
    response = meth(req, response)
  File "c:\Python26\Lib\urllib2.py", line 510, in http_response
    'http', request, response, code, msg, hdrs)
  File "c:\Python26\Lib\urllib2.py", line 435, in error
    return self._call_chain(*args)
  File "c:\Python26\Lib\urllib2.py", line 369, in _call_chain
    result = func(*args)
  File "c:\Python26\Lib\urllib2.py", line 518, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 403: Forbidden

这发生在我不同大陆的两个不同系统上.有谁知道为什么会这样?



1> Jochen Ritze..:

维基百科的立场是:

数据检索:对于与批准的机器人任务没有直接关系的任何用途,Bots不得用于检索批量内容.这包括从其他网站动态加载页面,这可能导致网站被列入黑名单并被永久拒绝访问.如果您想下载批量内容或镜像项目,请下载或托管您自己的数据库副本.

这就是Python被阻止的原因.你应该下载数据转储.

无论如何,你可以在Python 2中阅读这样的页面:

req = urllib2.Request(url, headers={'User-Agent' : "Magic Browser"}) 
con = urllib2.urlopen( req )
print con.read()

或者在Python 3中:

import urllib
req = urllib.request.Request(url, headers={'User-Agent' : "Magic Browser"}) 
con = urllib.request.urlopen( req )
print con.read()



2> S.Lott..:

要调试它,您需要捕获该异常.

try:
    f = urllib2.urlopen('http://en.wikipedia.org/wiki/OpenCola_(drink)')
except urllib2.HTTPError, e:
    print e.fp.read()

当我打印生成的消息时,它包括以下内容

"英语

我们的服务器目前遇到技术问题.这可能是暂时的,应尽快解决.请在几分钟后再试一次."



3> Eli..:

网站通常会通过检查是否由公认的用户代理访问来过滤访问.维基百科只是将您的脚本视为机器人并拒绝它.尝试欺骗浏览器.以下链接将为您提供一篇文章,向您展示如何.

http://wolfprojects.altervista.org/changeua.php

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有